<?php
	namespace Admin\Controller;
	use Think\Controller;

	class GoodsController extends CommonController{
		private $filename;

		public function index(){

			$model= D ('Goods');

			//-------------------搜索系统+分页系统-----------------------------------------------
	
 			$condition['is_new'] = $_GET['is_new1'];
 			$condition['is_bast'] = $_GET['is_bast1'];
 			$condition['is_hot'] = $_GET['is_hot1'];
   			$condition['name'] = "like  '%".$_GET['name1']."%'";
   								
 			foreach ($condition as $ke => $va) {
 				if (!empty($va)) 
 				{
 					//总条数  也可以直接在这里面使用 +一个搜索功能 不然搜索享受不到分页的功能
			 	$total=$model->where($condition)->count();		
 				}
 			}
			//总条数 
			$total=$model->where()->count();

			$page=new \Think\Page($total,5);//传入总记录数和每页显示的记录数(25)
			//-----定义上下页 当前页 首页的样式------
			$page->setConfig('header','共页数');
			$page->setConfig('prev','上一页');
			$page->setConfig('next','下一页');
			//分页跳转的时候保证查询条件
			$map['name'] = $_GET['name1'];
   			$map['is_new'] = $_GET['is_new1'];
   			$map['is_hot'] = $_GET['is_hot1'];
   			$map['is_bast'] = $_GET['is_bast1'];
			foreach($map as $key=>$val) 
				{   	

					$Page->parameter   .=  "$key=".urlencode($val).'&';
				}
			$show =$page-> show(); //得到了分页的样式,也就是上下页
			$limit=$page->firstRow.','.$page->listRows;//limit的查询条件 0开始 查询5条

			//---------------查询商品的 价格上架之类的 带limit 条件查询------------------
		
			$goodslist=$model->getAll($limit,$condition);

			foreach ($goodslist as  &$value) {
				$value['giname']='/public/Uploads/'.$this->substr($value['giname']).'80_'.$value['giname'];
			}

			//发送分页的样式，也就是上下页
			$this->assign('show_ye',$show);
			$this->assign('goodslist',$goodslist);
			
			$this->display();
		}

		//上架状态转换
		public function Ubast(){
			$id=$_GET['id'];

			$model= M ('Goods');
			//获取表但信息
			$list=$model->field('is_bast')->where('id='.$id)->select();
			// var_dump($list);
			if ($list[0]['is_bast']==1) 
			{
				$res=$model->where('id='.$id)->save(['is_bast'=>0]);
				$this->redirect('Goods/index');
			}else{
				$res=$model->where('id='.$id)->save(['is_bast'=>1]);
				$this->redirect('Goods/index');
			}
			
		}

		//新品状态转换
		public function Unew(){
			$id=$_GET['id'];

			$model= M ('Goods');
			//获取表但信息
			$list=$model->field('is_new')->where('id='.$id)->select();
			// var_dump($list);
			if ($list[0]['is_new']==1) 
			{
				$res=$model->where('id='.$id)->save(['is_new'=>0]);
				$this->redirect('Goods/index');
			}else{
				$res=$model->where('id='.$id)->save(['is_new'=>1]);
				$this->redirect('Goods/index');
			}
		}

		//热销状态转换
		public function Uhot(){
			$id=$_GET['id'];

			$model= M ('Goods');
			//获取表但信息
			$list=$model->field('is_hot')->where('id='.$id)->select();
			// var_dump($list);
			if ($list[0]['is_hot']==1) 
			{
				$res=$model->where('id='.$id)->save(['is_hot'=>0]);
				$this->redirect('Goods/index');
			}else{
				$res=$model->where('id='.$id)->save(['is_hot'=>1]);
				$this->redirect('Goods/index');
			}
		}

		//商品删除
		public function delete(){

			$id=$_GET['id'];

			$goods=M('Goods');
			$goods_img=M('goods_img');

			//开启事务
			$goods->startTrans();

			$res=$goods->where('id='.$id)->delete();
			//删除文件夹中的图片
			$goods_i=$goods_img->field('name')->where('id='.$id)->select();
			$this->setunlink($goods_i[0]['name']);
			if ($res) {
				$result=$goods_img->where('goods_id='.$id)->delete();
			}
			if ($result) 
			{				
				//如果2个都成功，那么确认
				$goods->commit();
				$this->success('删除成功',U('Goods/index'),1);
				$this->setunlink($this->filename);
			}else{
				//失败回滚
				$goods->rollback();
				$this->error('删除失败');
			}
			
		}

		public function adds(){

			//分类
			$cate= M('category');
			//把path和id拼接起来查		
			$option=$cate->field('id,name,pid,path,concat(path,id) bpath')->order('bpath')->select();
			foreach ($option as $k=> $v) 
			{
				// +-----------------------------------------------------------------------------------------
				// *	把path右边的点(,)去掉，在用,分割成数组 0,成一个数组  0,1,(或0,2,或0,3,)分割成2个数组，
				// *	count计算数组的个数，1的为顶级分类，2的为二级分类，3的为三级分类依次类推
				// *	(后面在减了1，好用来对应数据库中的顶级文类是0，二级分类是1，3级分类是2，减不减无所谓，
				// *	主要是用来让子分类做缩进用的)
				// +-----------------------------------------------------------------------------------------
				
				$num=count(explode(',',rtrim($v['path'],',')))-1;
				$option[$k]['name']=str_repeat('&nbsp;&nbsp;',$num).$v['name'];//str_repeat 重复使用字符串，子分类缩进
			}
				$this->assign('option',$option);
				$this->display('Goods/add');
			
		}

		//商品添加
		//+------------------------------------------------------------
		//* 上传商品,使用 $model->create() 接收 加入商品表，加入图片表
		//*	调用图片上传方法,上传方法中调用图压缩,同时返回文件名
		//* 上传失败删除图片 调用方法 setunlink() 
		//+------------------------------------------------------------
		public function add(){

			$model=D('Goods');
			// 自动验证表单是否为空 在Goods类中定义了这个成员属性

			//*-------------------------------------------------------------------------
			//*	一旦调用了add方法（或者save方法），创建在内存中的数据对象就会失效，		
			//*	如果希望创建好的数据对象在后面的数据处理中再次调用，可以保存数据对象先	
			//*--------------------------------------------------------------------------
			//create方法默认情况下是根据表单提交的post数据生成数据对象
			$data=$model->create();

			
			if (!$data) 
			{	//exit($model->getError());//错误提示 或者用下面的
				$this->error($model->getError(),U('Goods/adds'),1);
			}else{	
					$data['cate_id']=$_POST['category'];
					$data['user_id']=$_SESSION['admin_user']['id'];
					// var_dump($data);

					//调用上传文件方法
					$filename=$this->upload();
					//成功则调用 Goods类 的setAll()方法
					$result=$model->setAdd($data,$filename);									
					
				if ($result) 
				{//上传成功
					$this->success('添加成功',U('Goods/Index'),1);
				}else{
					$this->error('添加失败');
					//上传失败删除图片
					$this->setunlink($filename);
				}
			}
		}	

//----------------添加详情页图片(临时)------------------
		public function update(){
				$id=$_GET['id'];

				$this->assign('id',$id);	
				$this->display('Goods/detail');
		}
		public function detail(){
			$id=$_POST['id'];
			//var_dump($id);
			$model= M ('goods_img');

			//开启事务
			$model->startTrans();

			$filename=$this->upload();
			$data['name']=$filename;
			$data['goods_id']=$id;
			$data['is_face']=0;
			$list=$model->add($data);
			if ($list) {
				$model->commit();
				$this->error('添加成功');
			}else{
				$model->rollback();
				$this->error('添加失败');
			}
			
		}
//----------------修改背景图片------------------

		public function up(){
			$id=$_GET['id'];

			$this->assign('id',$id);	
			$this->display('Goods/detati');
		}
		public function updatefa(){
			$id=$_POST['id'];
			//var_dump($id);
			$model= M ('goods_img');

			//开启事务
			$model->startTrans();

			$filename=$this->upload();
			$data['name']=$filename;
			$data['goods_id']=$id;
			$data['is_face']=1;

			$list=$model->where('id='.$id)->save($data);
			if ($list) {
				$model->commit();
				$this->error('修改成功');
			}else{
				$model->rollback();
				$this->error('修改失败');
			}
			
		}


		//文件上传
		public function upload(){    
			// 实例化上传类  
			$upload = new \Think\Upload();
			// 设置附件上传大小
			$upload->maxSize   =     3145728 ;
			// 设置附件上传类型 
			$upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');				   
			// 设置附件上传根目录 
			$upload->rootPath=  './Public/';
			// 设置附件上传目录 
			$upload->savePath  =  './Uploads/'; 
			//设置上传文件名
			$upload->saveName=date('Ymd',time()).uniqid();
			//自动使用子目录保存上传文件
			$upload->autoSub=true;
			//子目录上传方式
			$upload->subName=date('Y',time()).'/'.date('m',time()).'/'.date('d',time());
			
			// 上传文件    
			 $info =  $upload->upload();    
			 if(!$info) {
			 // 上传错误提示错误信息        
			 $this->error($upload->getError());    
			 }else{
			 
			 	//调用图片压缩，把图片名字传过去
			 	$this->zoom($info['pic']['savename']);
			 	//返回图片名字
			 	return $info['pic']['savename'];			 	    
			 }
		}

		//拼接文件上传子目录  接收图片名
		 private function substr($filename)
		 {
		 	return substr($filename,0,4).'/'.substr($filename,4,2).'/'.substr($filename,6,2).'/';
		 }
		//图片压缩   接收图片名$info['pic']['savename']
		 private function zoom($filename)
			 {				 	
			 	$image = new \Think\Image();
			 	
			 	//拼接图片路径 			 调用拼接好的文件+子目录路径
			 	 $path='./public/uploads/'.$this->substr($filename);
			 	//读取图片完整路径
			 	$image->open($path.$filename);
			 	// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
			 	//前台图片大小：768*624 详情109*89 230*187  206*167
			 	$image->thumb(768, 768)->save($path.'768_'.$filename);
			 	$image->thumb(230, 230)->save($path.'230_'.$filename);
			 	$image->thumb(206, 206)->save($path.'206_'.$filename);
			 	$image->thumb(109, 109)->save($path.'109_'.$filename);
			 	$image->thumb(80, 80)->save($path.'80_'.$filename);
			 }

		//删除图片
		private function setunlink($filename){
			$path='./Public/Uploads/';
			unlink($path.$this->substr($filename).'768_'.$filename);
			unlink($path.$this->substr($filename).'230_'.$filename);
			unlink($path.$this->substr($filename).'80_'.$filename);
			unlink($path.$this->substr($filename).'206_'.$filename);
			unlink($path.$this->substr($filename).'109_'.$filename);
		}

/*------------------------模糊查询------------------------*/





	}
